Block devices store data in discrete units referred to as ‘blocks.’ These blocks typically have a fixed size and are the smallest unit of data that can be accessed from the device. It is common for hard disk drives and similar storage devices to be accessible as block storage devices. An operating system abstracts the block storage to overlay a file system on the block storage system. Applications can be given access over discrete block storage ranges, however this can create some inefficiencies in allocation where files do not utilize entire blocks or entire block allocations are not utilized.
Applications typically work with virtual address spaces defined by an operating system. These virtual address spaces can be mapped onto a set of physical blocks to store the contents of the virtual address space. The virtual address space virtualizes the details of the physical storage such that the size of virtual address space can be much greater than the size of the physical space, the virtual address space can grow and shrink on demand, and the blocks of the virtual address space can be allocated and freed dynamically. However, this introduces increased overhead in maintaining the virtual blocks and presents an issue of having to recover the state of the virtual blocks in the event of a failure. Depending on the importance of the data and the conditions under which the system is utilized, recovery can be a priority and redundant tracking of the mapping of the virtual blocks in the virtual address space and the physical blocks can be maintained and periodically stored in a persistent storage device. The proper protection of the mapping data and related meta-data enable the reconstruction of the virtual address spaces. The mapping data is often verified using cyclic redundancy checks, checksums and similar mechanisms to ensure that the mapping data is not corrupted. Where redundant copies of the mapping data are maintained, version numbers or similar indicators of the most up to date copy of the mapping data can be utilized.